#!/usr/bin/env perl

use strict;
use Getopt::Long;

my $output;
my $version;
my $docbook;
my $html;
my $xml;
my $plaintext;
my $no_split;
my $no_headers;

Getopt::Long::Configure('pass_through');
Getopt::Long::GetOptions(
	'output=s'   => \$output,
	'version'    => \$version,
	'no-split'   => \$no_split,
	'no-headers' => \$no_headers,
	'docbook'    => \$docbook,
	'html'       => \$html,
	'xml'        => \$xml,
	'plaintext'  => \$plaintext
);

if ($version)
{
	print "makeinfo (OpenWrt stub) 9.99\n";
	exit 0;
}


sub output_filename
{
	my $path = shift || return;
	my $name = $path;
	my $setfile;

	if (open F, "< $path")
	{
		while (defined(my $line = readline F))
		{
			if ($line =~ /\@setfilename\s+(\S+)/)
			{
				$setfile = $1;
				$setfile =~ s!^.+/!!;
				last;
			}
		}

		close F;
	}

	$name =~ s!^.+/!!;
	$name =~ s!\.[^.]+$!!;

	if ($html)
	{
		$setfile =~ s!\.[^.]+$!! if $setfile;

		if ($no_split)
		{
			return $setfile ? "$setfile.html" : "$name.html" unless $output;
			return $output;
		}

		return $setfile ? "$setfile/index.html" : "$name/index.html" unless $output;
		return "$output/index.html";
	}
	elsif ($xml || $docbook)
	{
		$setfile =~ s!\.[^.]+$!! if $setfile;

		return $setfile ? "$setfile.xml" : "$name.info" unless $output;
		return $output;
	}
	elsif ($plaintext)
	{
		return ($output || "-");	
	}

	return ($output || $setfile || "$name.info");
}

foreach my $arg (@ARGV)
{
	next unless -f $arg;

	my $out = output_filename($arg);
	if ($out =~ m!^(.+/)[^/]+$!)
	{
		system("mkdir", "-p", $1);
	}

	my $fd = \*STDOUT;
	if ($out ne "-" && !$no_headers)
	{
		open $fd, "> $out" || die "Can't open $out: $!\n";
	}

	if ($html || $xml || $docbook)
	{
		print $fd "<!-- Dummy output for $arg -->\n";
	}
	else
	{
		print $fd "Dummy output for $arg\n";	
	}

	close $fd;
}
